package com.EAsystem.mapper;

import com.EAsystem.entity.Evaluation;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EvaluationMapper {

    /**
     * 新增评价
     * @param evaluation 评价信息
     * @return 影响行数
     */
    int insertEvaluation(Evaluation evaluation);

    /**
     * 根据ID删除评价
     * @param id 评价ID
     * @return 影响行数
     */
    int deleteEvaluationById(Integer id);

    /**
     * 更新评价信息
     * @param evaluation 评价信息
     * @return 影响行数
     */
    int updateEvaluation(Evaluation evaluation);

    /**
     * 根据ID查询评价
     * @param id 评价ID
     * @return 评价对象
     */
    Evaluation findEvaluationById(Integer id);



    /**
     * 根据学生ID查询其所有评价
     * @param studentId 学生ID
     * @return 评价列表
     */
    List<Evaluation> findEvaluationsByStudentId(Integer studentId);





    /**
     * 根据学生ID和课程ID查询评价（一个学生对一门课通常只有一次评价）
     * @param studentId 学生ID
     * @param courseId 课程ID
     * @return 评价对象，如果不存在则为null
     */
    Evaluation findEvaluationByStudentAndCourse(@Param("studentId") Integer studentId, @Param("courseId") Integer courseId);

    /**
     * (可选) 分页查询所有评价 - 如果评价数量很多，管理员界面可能需要
     * @return 分页后的评价列表 (通常与PageHelper结合使用，这里只定义接口)
     */
    List<Evaluation> findAllEvaluationsWithPage(); // 具体分页逻辑在Service层处理

    /**
     * (可选) 根据条件查询评价 - 用于更复杂的搜索场景
     * @param evaluation 包含查询条件的对象
     * @return 评价列表
     */
    List<Evaluation> findEvaluationsByCondition(Evaluation evaluation);
}